/*
 * 
 * 
 */
package client.model;

import java.awt.Point;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.ArrayList;

public class Tabuleiro {
    private Jogador jogador;
    private int numJogadores=0;
    private Posicoes<Point> posicoesOcupadas;
    private ArrayList<Jogador> jogadores;
    
    
    public Tabuleiro(boolean isServer) throws UnknownHostException {
        jogadores = new ArrayList<Jogador>();
        jogador = new Jogador("douglas", isServer);//seta o numero do jogador da aplicação
        if(jogador.getServer()){
            jogador.setNum(1);
        }
        
        posicoesOcupadas = new Posicoes<Point>();
        //jogador 1
        posicoesOcupadas.add(new Point(1, 12));//peão 1
        posicoesOcupadas.add(new Point(3, 12));//peão 2
        posicoesOcupadas.add(new Point(3, 10));//peão 3
        posicoesOcupadas.add(new Point(1, 10));//peão 4
        //jogador 2
        posicoesOcupadas.add(new Point(10, 12));//peão 1
        posicoesOcupadas.add(new Point(12, 12));//peão 2
        posicoesOcupadas.add(new Point(12, 10));//peão 3
        posicoesOcupadas.add(new Point(10, 10));//peão 4
        //jogador 3
        posicoesOcupadas.add(new Point(10, 3));//peão 1
        posicoesOcupadas.add(new Point(12, 3));//peão 2
        posicoesOcupadas.add(new Point(12, 1));//peão 3
        posicoesOcupadas.add(new Point(10, 1));//peão 4
        //jogador 4
        posicoesOcupadas.add(new Point(1, 3));//peão 1
        posicoesOcupadas.add(new Point(3, 3));//peão 2
        posicoesOcupadas.add(new Point(3, 1));//peão 3
        posicoesOcupadas.add(new Point(1, 1));//peão 4
    }
    
    public void setJogador(String nome, int num){
        Jogador temp = new Jogador(nome, false);
        temp.setNum(num);
        jogadores.add(temp);//seta nome e numero dos outros jogadores 
    }
    
    public void setPosicao(int numPeao, Point p){
        jogador.setPosPeao(numPeao, p);
        
        switch(jogador.getNum()){
            case 1:
                switch(numPeao){
                    case 1:
                        posicoesOcupadas.get(0).setLocation(p);
                        break;
                        
                    case 2:
                        posicoesOcupadas.get(1).setLocation(p);
                        break;
                        
                    case 3:
                        posicoesOcupadas.get(2).setLocation(p);
                        break;
                        
                    case 4:
                        posicoesOcupadas.get(3).setLocation(p);
                        break;
                }
                break;
                
            case 2:
                switch(numPeao){
                    case 1:
                        posicoesOcupadas.get(4).setLocation(p);
                        break;
                        
                    case 2:
                        posicoesOcupadas.get(5).setLocation(p);
                        break;
                        
                    case 3:
                        posicoesOcupadas.get(6).setLocation(p);
                        break;
                        
                    case 4:
                        posicoesOcupadas.get(7).setLocation(p);
                        break;
                }
                break;
                
            case 3:
                switch(numPeao){
                    case 1:
                        posicoesOcupadas.get(8).setLocation(p);
                        break;
                        
                    case 2:
                        posicoesOcupadas.get(9).setLocation(p);
                        break;
                        
                    case 3:
                        posicoesOcupadas.get(10).setLocation(p);
                        break;
                        
                    case 4:
                        posicoesOcupadas.get(11).setLocation(p);
                        break;
                }
                break;
                
            case 4:
               switch(numPeao){
                    case 1:
                        posicoesOcupadas.get(12).setLocation(p);
                        break;
                        
                    case 2:
                        posicoesOcupadas.get(13).setLocation(p);
                        break;
                        
                    case 3:
                        posicoesOcupadas.get(14).setLocation(p);
                        break;
                        
                    case 4:
                        posicoesOcupadas.get(15).setLocation(p);
                        break;
                } 
                break;
        }
    }
    
    public Posicoes getListaPosicoes(){
        return posicoesOcupadas;
    }
    
    public Jogador getJogador(){
        return jogador;
    }
}
